from SimpleXMLRPCServer import SimpleXMLRPCServer
import threading

#Clase Server (meter en un thread?)
class server(threading.Thread):	
	
		
	def __init__(self, port, host, modules=None):
		self.modules = modules
		self.port = port
		self.host = host
		self.friendslist = [ ]
		self.estados = {"serverdisp":0, "autoask":1 }
		self.serv = SimpleXMLRPCServer((self.host, self.port))
		self.debug("Clase Server Creada")
		threading.Thread.__init__(self)


	def run(self):  
	        
		self.serv.register_introspection_functions()
		self.debug("Servidor RPC Arrancando")
		self.estados["serverdisp"] = 1
		self.serv.serve_forever()
		
	def addfriend(self, f):
		#FALTA, comprobar que no exite ya este friend
		self.friendslist.append(f)
		self.debug ("amigo agregado")
		f.estados["disp"] = "offline"
		#comprobar dispobivilidad
		if self.estados["autoask"]==1:
			conectar = f.conect()
						
		
		#actualizar estado
	def debug(self, text):
		if self.modules["debugmodule"]:
			self.modules["debugmodule"].showsimple(text)
	
	def loadcontrolrpcsystem(self):
		self.serv.register_function(self.controlrpcsystem)
		self.debug("Cargado protocolo de control")
	#protocolo de control
	def controlrpcsystem(self, token):
		#token deberia ser una lista
		if token[0] == "SR":
			self.debug("SOLICITADO EstadoRPC")
			return self.estados["serverdisp"]
		if token[0] == "CA":
			self.debug("Solicitado Conexion")
			return 1
		return "ON"
